//Copyright 2009 Dominik Punz
//
//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.

#ifndef jtf_h__104645
#define jtf_h__104645

#include "jniModel.h"

class JtfDesktopClass : public JClass
{
public:
  JtfDesktopClass() : JClass("com/borland/silktest/jtf/Desktop"),
    Constructor(this, "()V"),
    ConstructorEx(this, "(Ljava/lang/String;)V"),
    ExecuteBaseState(this, "executeBaseState", "(Lcom/borland/silktest/jtf/IBaseState;)Lcom/borland/silktest/jtf/TestObject;"),
    Attach(this, "attach", "(Ljava/lang/String;[Lcom/borland/silktest/jtf/common/TechDomain;)V"),
    AttachEx(this, "attach", "(Ljava/lang/String;Ljava/lang/String;[Lcom/borland/silktest/jtf/common/TechDomain;)V"),
    DetachAll(this, "detachAll", "()V"),
    GetOption(this, "getOption", "(Ljava/lang/String;)Ljava/lang/Object;"),
    GetTechDomainOption(this, "getOption", "(Ljava/lang/String;Lcom/borland/silktest/jtf/common/TechDomain;)Ljava/lang/Object;"),
    SetOption(this, "setOption", "(Ljava/lang/String;Ljava/lang/Object;)V"),
    SetTechDomainOption(this, "setOption", "(Ljava/lang/String;Ljava/lang/Object;[Lcom/borland/silktest/jtf/common/TechDomain;)V"),
    ResetAllOptions(this, "resetAllOptions", "()V")
  {}
  JConstructor Constructor;
  JConstructor ConstructorEx;
  JObjectMethodI ExecuteBaseState;
  JVoidMethodI Attach;
  JVoidMethodI AttachEx;
  JVoidMethodI DetachAll;
  JObjectMethodI GetOption;
  JObjectMethodI GetTechDomainOption;
  JVoidMethodI SetOption;
  JVoidMethodI SetTechDomainOption;
  JVoidMethodI ResetAllOptions;
};

class JtfTechDomainClass : public JClass
{
public:
  JtfTechDomainClass() : JClass("com/borland/silktest/jtf/common/TechDomain"),
    Constructor(this, "(Ljava/lang/String;)V")
  {}
  JConstructor Constructor;
};

class JtfBaseStateClass : public JClass
{
public:
  JtfBaseStateClass() : JClass("com/borland/silktest/jtf/BaseState"),
    Constructor(this, "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Lcom/borland/silktest/jtf/common/TechDomain;)V")
  {}
  JConstructor Constructor;  
};

class JtfBrowserBaseStateClass : public JClass
{
public:
  JtfBrowserBaseStateClass() : JClass("com/borland/silktest/jtf/BrowserBaseState"),
    Constructor(this, "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Lcom/borland/silktest/jtf/common/TechDomain;)V")
  {}
  JConstructor Constructor;  
};

class JtfAbstractTestObjectClass : public JClass
{
public:
  JtfAbstractTestObjectClass() : JClass("com/borland/silktest/jtf/AbstractTestObject"),
    Find(this, "find", "(Ljava/lang/String;)Lcom/borland/silktest/jtf/TestObject;"),
    FindAll(this, "findAll", "(Ljava/lang/String;)Ljava/util/List;"),
    GetHandle(this, "getHandle", "()Lcom/borland/silktest/jtf/common/JtfObjectHandle;"),
    GetChildren(this, "findAll", "()Ljava/util/List;")
  {}
  JObjectMethodI Find;
  JObjectMethodI FindAll;
  JObjectMethodI GetHandle;
  JObjectMethodI GetChildren;
};

class JtfTestObjectClass : public JClass
{
public:
  JtfTestObjectClass() : JClass("com/borland/silktest/jtf/TestObject"),
    GetChildren(this, "getChildren", "()Ljava/util/List;")
  {}
  JObjectMethodI GetChildren;
};

class JtfObjectHandleClass : public JClass
{
public:
  JtfObjectHandleClass() : JClass("com/borland/silktest/jtf/common/JtfObjectHandle"),
    GetHandle(this, "getHandle", "()I"),
    GetSpyId(this, "getSpyId", "()I"),
    GetClassName(this, "getClassName", "()Ljava/lang/String;")
  {}
  JIntMethodI GetHandle;
  JIntMethodI GetSpyId;
  JObjectMethodI GetClassName;
};

#endif // jtf_h__104645